import sys

import paramiko
def sshExeCMD(ip,username,password,port=22):
    ssh_client=paramiko.SSHClient()
    ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

    try:
        ssh_client.connect(hostname="10.4.7.24",port=22,username="root",password="1")
    except Exception as e:
        print("服务器%s链接失败!"%ip)
        print(e)
        sys.exit()
        #函数是通过抛出异常的方式来终止进程的，也就是说如果它抛出来的异常被捕捉到了的话程序就不会退出了。
        sys.exit()
        #链接主机成功后，可以在目标主机执行cmd命令
        """
        1、标准输入       用于实现交互式命令
        2、标准输出       保存命令的正常执行结果
        3、标准错误输出    保存命令的错误信息（如果输入的命令报错了，则会存在这里）
        """
    #stdin,stdout,stderr对应的是上面的三个标准输入，标准输出，标准错误输出
    stdin,stdout,stderr=ssh_client.exec_command("df -hT")
    print("服务器%s硬盘使用率情况"%ip)
    print(stdout.read().decode("utf-8"))
    #最后关闭远程链接
    ssh_client.close()


#得在10.4.7.2得到公钥后放在known_hosts里，才可以连上他
if __name__ == '__main__':
    servers={"10.4.7.24":{"username":"root","password":"1","port":22},
             "10.4.10.70":{"username":"sensetime","password":"t2mksense","port": 22}
             }
    for ip,info in servers.items():
        sshExeCMD(ip=ip,
                  username=info.get("username"),
                  password=info.get("password"),
                  port=info.get("port"),
                  )